<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="banner-heading flex_ccenter">
            <div class="heading-item">
              <h1 class="title fw700 f-42 c-fff">Instagram-Story-Download</h1>
              <h2 class="sub c-fff f-18 fw400">
                Bester kostenloser Instagram-Story-Downloader
              </h2>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                    type="text"
                    class="input f-18"
                    v-model="input"
                    @input="handleInput"
                    @paste="handleInput"
                    placeholder="Paste URL Instagram"
                    list="fruits"
                    name="fruit"
                  />
                  <datalist id="fruits">
                    <option value="Apple"></option>
                    <option value="Banana"></option>
                    <option value="Cherry"></option>
                  </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>
                Daten werden abgerufen, bitte warten Sie ein paar Sekunden!
              </div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Die Website kann Ihren Link nicht verarbeiten, da er privat ist
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Bei den von Ihnen eingegebenen Daten handelt es sich nicht um
              einen Link. Bitte geben Sie einen gültigen Link ein Beispiel:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Mit der App Insta Downloader herunterladen
              </h3>
              <p class="f-16 c-ccc">
                Unsere App bietet eine schnelle und einfache Lösung zum
                Herunterladen Instagram-Videos, Bereitstellung von Videos in
                HD-Qualität ohne Wasserzeichen.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">Instagram-Story-Download mit Savinginsta</h3>
            <p class="f-16 c-ccc">
              Savinginsta.Com ist bekanntlich der führende
              Instagram-Story-Downloader für seine Benutzerfreundlichkeit und
              die Möglichkeit, hochwertiges Instagram herunterzuladen
              Geschichten in Höchstgeschwindigkeit. Laden Sie Instagram Stories
              auf Ihr Konto herunter Telefon, PC oder Tablet in höchster
              Qualität über unser Instagram Video-Downloader direkt von Ihrem
              Browser aus. Keine Software Eine Installation ist erforderlich und
              es unterstützt sowohl Android als auch iOS.
            </p>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Warum Savinginsta für Instagram-Story-Downloads verwenden?
            </h3>
            <p class="f-16 c-ccc">
              Instagram-Geschichten voller fesselnder Fotos und Videos sind es
              einen wesentlichen Teil unseres digitalen Ausdrucks aus, sind aber
              nur sichtbar für 24 Stunden. Wenn Sie gerne Instagram-Geschichten
              ansehen und möchten Laden Sie sie herunter, Savinginsta ist hier,
              um Ihnen zu helfen. Geben Sie einfach die ein Laden Sie die URL
              Ihrer Instagram-Story in Savinginsta herunter und laden Sie das
              Beste herunter Kostenlose Instagram Stories.
            </p>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Wie lade ich eine Video-Instagram-Story herunter?
              </h3>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Schritt01:</span>
                  <span class="f-16 c-000">
                    Geben Sie den Instagram-Benutzernamen ein, dessen Story Sie
                    veröffentlichen möchten in Savinginsta.App
                    herunterladen.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Schritt02:</span>
                <span class="f-16 c-000">
                  Wählen Sie die Story aus, die Sie herunterladen möchten.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Schritt03:</span>
                <span class="f-16 c-000"
                  >Klicken Sie auf „Herunterladen“, um die Video-Instagram-Story
                  auf Ihrem Computer zu speichern Gerät.</span
                >
              </div>
            </div>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Wie lade ich eine Insta-Story auf mein Handy herunter?
            </h3>
            <div class="attributes-list">
              <div class="features-title">
                Das Herunterladen ist super einfach. Hier ist eine ausführliche
                Anleitung:
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Öffnen Sie Instagram in einem Browser wie Chrome, Firefox oder
                  dem Instagram-App.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Wählen Sie eine Geschichte aus, die Sie ansprechend finden.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Klicken Sie auf das Video, das Sie herunterladen möchten.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Kopieren Sie die Story-URL aus der Adressleiste.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Fügen Sie den Benutzernamen in das Adressfeld von Savinginsta
                  ein.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Klicken Sie auf „Herunterladen“, um die Instagram-Story online
                  herunterzuladen.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Ihr heruntergeladenes IG-Story-Foto oder -Video befindet sich
                  jetzt in Ihrem Ordner.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Wie lade ich Instagram-Geschichten und -Highlights online
                herunter?
              </h3>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="f-16 c-000"
                    >Holen Sie sich den Link aus den Instagram Stories oder
                    kopieren Sie ihn Benutzername des Instagram-Kontos, das Sie
                    herunterladen möchten aus.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="f-16 c-000"
                  >Gehen Sie zu Savinginsta - Insta Story Downloader und fügen
                  Sie das ein Story-Link in die Symbolleiste.
                </span>
              </div>
              <div class="step">
                <span class="f-16 c-000"
                  >Wählen Sie die auf dem Bildschirm angezeigte Geschichte aus und wählen Sie die Geschichte aus
                   Sie herunterladen möchten, und klicken Sie auf „Herunterladen“.</span
                >
              </div>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Was Savinginsta.Com zum besten Instagram (IG)-Story-Download macht
               Werkzeug?
            </h3>
            <ul class="f-16 c-ccc">
              <li>Benutzerfreundlich und das schnellste Tool.</li>
              <li>Ständige Updates, um den besten Service zu bieten.</li>
              <li>
                Komplett frei! Wir unterstützen unsere Entwicklung durch minimal
                 Werbung.
              </li>
            </ul>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Werkzeuge</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/de/instagram-story-download"
                      >Instagram-Story-Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <nuxt-link to="/de/instagram-reels-video-download"
                      >Instagram-Reels-Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok-Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Unterstützung</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Kontakt </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Legal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Nutzungsbedingungen
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Datenschutzrichtlinie </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Wir sind nicht mit Instagram oder Meta verbunden</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>
    
<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";
export default {
  components: { pageHeader, SuccessContent },
  head: {
    htmlAttrs: {
      lang: "de",
    },
    bodyAttrs: {
      "data-lang": "de",
    },
    title: "Bester kostenloser Instagram Story Downloader",
    meta: [
      { property: "og:locale", content: "de" },
      //Page Information
      {
        name: "description",
        content:
          "Laden Sie Instagram-Geschichten mühelos online mit dem kostenlosen Savinginsta Instagram Downloader herunter. Speichern Sie hochwertige Instagram-Geschichten ohne Werbung direkt auf Ihrem Computer oder Telefon. Keine Wasserzeichen",
      },

      //Schema.org Microdata
      {
        itemprop: "name",
        content: "Bester kostenloser Instagram Story Downloader",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content: "Bester kostenloser Instagram Story Downloader",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/de/instagram-story-download" },

      {
        property: "og:description",
        content:
          "Laden Sie Instagram-Geschichten mühelos online mit dem kostenlosen Savinginsta Instagram Downloader herunter. Speichern Sie hochwertige Instagram-Geschichten ohne Werbung direkt auf Ihrem Computer oder Telefon. Keine Wasserzeichen",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/de/instagram-story-download" },
      {
        name: "twitter:title",
        content: "Bester kostenloser Instagram Story Downloader",
      },
      {
        name: "twitter:description",
        content:
          "Laden Sie Instagram-Geschichten mühelos online mit dem kostenlosen Savinginsta Instagram Downloader herunter. Speichern Sie hochwertige Instagram-Geschichten ohne Werbung direkt auf Ihrem Computer oder Telefon. Keine Wasserzeichen",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/de/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro/instagram-story-download",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el/instagram-story-download",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/de/instagram-story-download",
      },
    ],
    script: [
      {
        json: {
          "@context": "http://schema.org",
          "@graph": [
            {
              "@type": "WebSite",
              name: "Savinginsta",
              alternateName: "Instagram downloader",
              url: "https://savinginsta.com",
            },
            {
              "@type": "WebPage",
              name: "Bester kostenloser Instagram Story Downloader - Savinginsta", //title
              inLanguage: "de", //语种
              description:
                "Laden Sie Instagram-Geschichten mühelos online mit dem kostenlosen Savinginsta Instagram Downloader herunter. Speichern Sie hochwertige Instagram-Geschichten ohne Werbung direkt auf Ihrem Computer oder Telefon. Keine Wasserzeichen.", //元描述
              image: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg", //绝对路径
              url: "https://savinginsta.com/de/instagram-story-download", //当前url
            },
          ],
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Was ist ein Instagram Story Downloader?`,
          content: `Es ist ein kostenloses Tool zum einfachen Herunterladen von Instagram Stories ohne Registrierung.`,
        },
        {
          title: `Wie lade ich eine Video-Instagram-Story herunter?`,
          content: `Befolgen Sie die einfachen Anweisungen oben, um schnell Instagram-Geschichten bei Savinginsta herunterzuladen.`,
        },
        {
          title: `Wie kann ich Highlights von Instagram herunterladen?`,
          content: `Um Instagram-Highlights herunterzuladen, muss das Konto öffentlich sein. Geben Sie den Benutzernamen auf Savinginsta.app ein und klicken Sie auf „Herunterladen“.`,
        },
        {
          title: `Was ist, wenn ich IG Stories anonym ansehen möchte?`,
          content: `Wir haben eine perfekte Lösung: unseren anonymen Instagram Story Viewer Instagram Story Viewer.`,
        },
        {
          title: `Müssen Sie sich mit Ihrem Instagram-Konto anmelden?`,
          content: `Kein Login erforderlich. Savinginsta fragt nicht nach persönlichen Daten und sorgt so für sichere und anonyme Downloads.`,
        },
        {
          title: `Kann ich Videos direkt auf Instagram speichern?`,
          content: `Ja, aber Sie müssen warten, bis das Video zu Ende ist.`,
        },
        {
          title: `Unterstützt die Website das Herunterladen von Insta für Computer?`,
          content: `Auf jeden Fall können Sie Videos, Fotos, Geschichten und mehr von einem PC herunterladen. Siehe auch: Von Insta auf den PC herunterladen.`,
        },
        {
          title: `Können Sie Instagram Story für Android herunterladen?`,
          content: `Ja, kopieren Sie den Beitragslink, fügen Sie ihn in das Feld unserer Website ein und speichern Sie ihn. Weitere Informationen: Von Insta auf Android herunterladen.`,
        },
        {
          title: `Wie lade ich Story-Instagram-Videos und -Fotos auf das iPhone herunter?`,
          content: `Es ist genauso einfach wie auf Android. Sehen Sie sich die Anleitung zum Herunterladen von Instagram-Storys für iOS an.`,
        },
        {
          title: `Wo finde ich gespeicherte Story-Videos auf einem Computer?`,
          content: `Überprüfen Sie den Download-Verlauf Ihres Browsers mit Strg+J für Windows und Umschalt+Befehl+J für Mac.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "story",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "story",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "story",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "story",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "story",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "story",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },
    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "story",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "story",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/story.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
    